package com.jx.smartbot.VO.callback;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({ "Id", "PpGroupId", "UserId", "IsOrganization", "DepartmentId", "GroupsTemplateId", "GroupsTemplateDTO", "Status", "CreateTime",
		"UpdateTime", "Guid", "ToolId", "IsPrivate", "Tags", "AttenUsers" })
public class GroupPlussDetails {
	public static class AttenUser {

		@JsonProperty("Id")
		private int id;
		@JsonProperty("GroupsId")
		private int groupsId;
		@JsonProperty("GroupsRoleId")
		private int groupsRoleId;
		//@JsonProperty("UserId")
		private String userId;
		//@JsonProperty("UserName")
		private String userName;
		@JsonProperty("IsManager")
		private int isManager;
		@JsonProperty("IsAttention")
		private int isAttention;
		@JsonProperty("IsMember")
		private int isMember;
		@JsonProperty("GroupsRoleName")
		private Object groupsRoleName;
		@JsonProperty("Email")
		private String email;
		@JsonProperty("Telephone")
		private Object telephone;
		@JsonProperty("CreateTime")
		private long createTime;
		@JsonProperty("UpdateTime")
		private long updateTime;
		@JsonProperty("ppUserDTO")
		private Object ppUserDTO;

		@JsonProperty("Id")
		public int getId() {
			return id;
		}

		@JsonProperty("Id")
		public void setId(int id) {
			this.id = id;
		}

		@JsonProperty("GroupsId")
		public int getGroupsId() {
			return groupsId;
		}

		@JsonProperty("GroupsId")
		public void setGroupsId(int groupsId) {
			this.groupsId = groupsId;
		}

		@JsonProperty("GroupsRoleId")
		public int getGroupsRoleId() {
			return groupsRoleId;
		}

		@JsonProperty("GroupsRoleId")
		public void setGroupsRoleId(int groupsRoleId) {
			this.groupsRoleId = groupsRoleId;
		}

		@JsonProperty("UserId")
		public String getUserId() {
			return userId;
		}

		@JsonProperty("UserId")
		public void setUserId(String userId) {
			this.userId = userId;
		}

		@JsonProperty("UserName")
		public String getUserName() {
			return userName;
		}

		@JsonProperty("UserName")
		public void setUserName(String userName) {
			this.userName = userName;
		}

		@JsonProperty("IsManager")
		public int getIsManager() {
			return isManager;
		}

		@JsonProperty("IsManager")
		public void setIsManager(int isManager) {
			this.isManager = isManager;
		}

		@JsonProperty("IsAttention")
		public int getIsAttention() {
			return isAttention;
		}

		@JsonProperty("IsAttention")
		public void setIsAttention(int isAttention) {
			this.isAttention = isAttention;
		}

		@JsonProperty("IsMember")
		public int getIsMember() {
			return isMember;
		}

		@JsonProperty("IsMember")
		public void setIsMember(int isMember) {
			this.isMember = isMember;
		}

		@JsonProperty("GroupsRoleName")
		public Object getGroupsRoleName() {
			return groupsRoleName;
		}

		@JsonProperty("GroupsRoleName")
		public void setGroupsRoleName(Object groupsRoleName) {
			this.groupsRoleName = groupsRoleName;
		}

		@JsonProperty("Email")
		public String getEmail() {
			return email;
		}

		@JsonProperty("Email")
		public void setEmail(String email) {
			this.email = email;
		}

		@JsonProperty("Telephone")
		public Object getTelephone() {
			return telephone;
		}

		@JsonProperty("Telephone")
		public void setTelephone(Object telephone) {
			this.telephone = telephone;
		}

		@JsonProperty("CreateTime")
		public long getCreateTime() {
			return createTime;
		}

		@JsonProperty("CreateTime")
		public void setCreateTime(long createTime) {
			this.createTime = createTime;
		}

		@JsonProperty("UpdateTime")
		public long getUpdateTime() {
			return updateTime;
		}

		@JsonProperty("UpdateTime")
		public void setUpdateTime(long updateTime) {
			this.updateTime = updateTime;
		}

		@JsonProperty("ppUserDTO")
		public Object getPpUserDTO() {
			return ppUserDTO;
		}

		@JsonProperty("ppUserDTO")
		public void setPpUserDTO(Object ppUserDTO) {
			this.ppUserDTO = ppUserDTO;
		}

	}

	@JsonProperty("Id")
	private int id;
	@JsonProperty("PpGroupId")
	private int ppGroupId;
	@JsonProperty("UserId")
	private String userId;
	@JsonProperty("IsOrganization")
	private int isOrganization;
	@JsonProperty("DepartmentId")
	private int departmentId;
	@JsonProperty("GroupsTemplateId")
	private int groupsTemplateId;
	@JsonProperty("GroupsTemplateDTO")
	private GroupsTemplateDTO groupsTemplateDTO;
	@JsonProperty("Status")
	private int status;
	@JsonProperty("CreateTime")
	private long createTime;
	@JsonProperty("UpdateTime")
	private long updateTime;
	@JsonProperty("Guid")
	private String guid;
	@JsonProperty("ToolId")
	private Object toolId;
	@JsonProperty("ToolName")
	private String toolName;
	@JsonProperty("IsPrivate")
	private int isPrivate;
	@JsonProperty("Tags")
	private List<Tag> tags = null;
	@JsonProperty("AttenUsers")
	private List<AttenUser> attenUsers = null;

	@JsonProperty("Id")
	public int getId() {
		return id;
	}

	@JsonProperty("Id")
	public void setId(int id) {
		this.id = id;
	}

	@JsonProperty("PpGroupId")
	public int getPpGroupId() {
		return ppGroupId;
	}

	@JsonProperty("PpGroupId")
	public void setPpGroupId(int ppGroupId) {
		this.ppGroupId = ppGroupId;
	}

	@JsonProperty("UserId")
	public String getUserId() {
		return userId;
	}

	@JsonProperty("UserId")
	public void setUserId(String userId) {
		this.userId = userId;
	}

	@JsonProperty("IsOrganization")
	public int getIsOrganization() {
		return isOrganization;
	}

	@JsonProperty("IsOrganization")
	public void setIsOrganization(int isOrganization) {
		this.isOrganization = isOrganization;
	}

	@JsonProperty("DepartmentId")
	public int getDepartmentId() {
		return departmentId;
	}

	@JsonProperty("DepartmentId")
	public void setDepartmentId(int departmentId) {
		this.departmentId = departmentId;
	}

	@JsonProperty("GroupsTemplateId")
	public int getGroupsTemplateId() {
		return groupsTemplateId;
	}

	@JsonProperty("GroupsTemplateId")
	public void setGroupsTemplateId(int groupsTemplateId) {
		this.groupsTemplateId = groupsTemplateId;
	}

	@JsonProperty("GroupsTemplateDTO")
	public GroupsTemplateDTO getGroupsTemplateDTO() {
		return groupsTemplateDTO;
	}

	@JsonProperty("GroupsTemplateDTO")
	public void setGroupsTemplateDTO(GroupsTemplateDTO groupsTemplateDTO) {
		this.groupsTemplateDTO = groupsTemplateDTO;
	}

	@JsonProperty("Status")
	public int getStatus() {
		return status;
	}

	@JsonProperty("Status")
	public void setStatus(int status) {
		this.status = status;
	}

	@JsonProperty("CreateTime")
	public long getCreateTime() {
		return createTime;
	}

	@JsonProperty("CreateTime")
	public void setCreateTime(long createTime) {
		this.createTime = createTime;
	}

	@JsonProperty("UpdateTime")
	public long getUpdateTime() {
		return updateTime;
	}

	@JsonProperty("UpdateTime")
	public void setUpdateTime(long updateTime) {
		this.updateTime = updateTime;
	}

	@JsonProperty("Guid")
	public String getGuid() {
		return guid;
	}

	@JsonProperty("Guid")
	public void setGuid(String guid) {
		this.guid = guid;
	}

	@JsonProperty("ToolId")
	public Object getToolId() {
		return toolId;
	}

	@JsonProperty("ToolId")
	public void setToolId(Object toolId) {
		this.toolId = toolId;
	}

	@JsonProperty("IsPrivate")
	public int getIsPrivate() {
		return isPrivate;
	}

	@JsonProperty("IsPrivate")
	public void setIsPrivate(int isPrivate) {
		this.isPrivate = isPrivate;
	}

	@JsonProperty("Tags")
	public List<Tag> getTags() {
		return tags;
	}

	@JsonProperty("Tags")
	public void setTags(List<Tag> tags) {
		this.tags = tags;
	}

	@JsonProperty("AttenUsers")
	public List<AttenUser> getAttenUsers() {
		return attenUsers;
	}

	@JsonProperty("AttenUsers")
	public void setAttenUsers(List<AttenUser> attenUsers) {
		this.attenUsers = attenUsers;
	}

	public String getToolName() {
		return toolName;
	}

	public void setToolName(String toolName) {
		this.toolName = toolName;
	}

	@JsonInclude(JsonInclude.Include.NON_NULL)
	@JsonPropertyOrder({ "Id", "Name", "Icon", "Description", "TemplateTools", "CreateTime", "UpdateTime" })
	public static class GroupsTemplateDTO {

		@JsonProperty("Id")
		private int id;
		@JsonProperty("Name")
		private String name;
		@JsonProperty("Icon")
		private String icon;
		@JsonProperty("Description")
		private String description;
		@JsonProperty("TemplateTools")
		private List<TemplateTool> templateTools = null;
		@JsonProperty("CreateTime")
		private long createTime;
		@JsonProperty("UpdateTime")
		private long updateTime;

		@JsonProperty("Id")
		public int getId() {
			return id;
		}

		@JsonProperty("Id")
		public void setId(int id) {
			this.id = id;
		}

		@JsonProperty("Name")
		public String getName() {
			return name;
		}

		@JsonProperty("Name")
		public void setName(String name) {
			this.name = name;
		}

		@JsonProperty("Icon")
		public String getIcon() {
			return icon;
		}

		@JsonProperty("Icon")
		public void setIcon(String icon) {
			this.icon = icon;
		}

		@JsonProperty("Description")
		public String getDescription() {
			return description;
		}

		@JsonProperty("Description")
		public void setDescription(String description) {
			this.description = description;
		}

		@JsonProperty("TemplateTools")
		public List<TemplateTool> getTemplateTools() {
			return templateTools;
		}

		@JsonProperty("TemplateTools")
		public void setTemplateTools(List<TemplateTool> templateTools) {
			this.templateTools = templateTools;
		}

		@JsonProperty("CreateTime")
		public long getCreateTime() {
			return createTime;
		}

		@JsonProperty("CreateTime")
		public void setCreateTime(long createTime) {
			this.createTime = createTime;
		}

		@JsonProperty("UpdateTime")
		public long getUpdateTime() {
			return updateTime;
		}

		@JsonProperty("UpdateTime")
		public void setUpdateTime(long updateTime) {
			this.updateTime = updateTime;
		}

	}

	@JsonInclude(JsonInclude.Include.NON_NULL)
	@JsonPropertyOrder({ "Id", "GroupsId", "TagId", "Name", "CreateTime", "UpdateTime" })
	public static class Tag {

		@JsonProperty("Id")
		private int id;
		@JsonProperty("GroupsId")
		private int groupsId;
		@JsonProperty("TagId")
		private int tagId;
		@JsonProperty("Name")
		private String name;
		@JsonProperty("CreateTime")
		private long createTime;
		@JsonProperty("UpdateTime")
		private long updateTime;

		@JsonProperty("Id")
		public int getId() {
			return id;
		}

		@JsonProperty("Id")
		public void setId(int id) {
			this.id = id;
		}

		@JsonProperty("GroupsId")
		public int getGroupsId() {
			return groupsId;
		}

		@JsonProperty("GroupsId")
		public void setGroupsId(int groupsId) {
			this.groupsId = groupsId;
		}

		@JsonProperty("TagId")
		public int getTagId() {
			return tagId;
		}

		@JsonProperty("TagId")
		public void setTagId(int tagId) {
			this.tagId = tagId;
		}

		@JsonProperty("Name")
		public String getName() {
			return name;
		}

		@JsonProperty("Name")
		public void setName(String name) {
			this.name = name;
		}

		@JsonProperty("CreateTime")
		public long getCreateTime() {
			return createTime;
		}

		@JsonProperty("CreateTime")
		public void setCreateTime(long createTime) {
			this.createTime = createTime;
		}

		@JsonProperty("UpdateTime")
		public long getUpdateTime() {
			return updateTime;
		}

		@JsonProperty("UpdateTime")
		public void setUpdateTime(long updateTime) {
			this.updateTime = updateTime;
		}

	}

	public static class TemplateTool {

		@JsonProperty("Id")
		private int id;
		@JsonProperty("GroupsTemplateId")
		private int groupsTemplateId;
		@JsonProperty("ToolId")
		private int toolId;
		@JsonProperty("ToolName")
		private String toolName;
		@JsonProperty("CreateTime")
		private long createTime;
		@JsonProperty("UpdateTime")
		private long updateTime;

		@JsonProperty("Id")
		public int getId() {
			return id;
		}

		@JsonProperty("Id")
		public void setId(int id) {
			this.id = id;
		}

		@JsonProperty("GroupsTemplateId")
		public int getGroupsTemplateId() {
			return groupsTemplateId;
		}

		@JsonProperty("GroupsTemplateId")
		public void setGroupsTemplateId(int groupsTemplateId) {
			this.groupsTemplateId = groupsTemplateId;
		}

		@JsonProperty("ToolId")
		public int getToolId() {
			return toolId;
		}

		@JsonProperty("ToolId")
		public void setToolId(int toolId) {
			this.toolId = toolId;
		}

		@JsonProperty("ToolName")
		public String getToolName() {
			return toolName;
		}

		@JsonProperty("ToolName")
		public void setToolName(String toolName) {
			this.toolName = toolName;
		}

		@JsonProperty("CreateTime")
		public long getCreateTime() {
			return createTime;
		}

		@JsonProperty("CreateTime")
		public void setCreateTime(long createTime) {
			this.createTime = createTime;
		}

		@JsonProperty("UpdateTime")
		public long getUpdateTime() {
			return updateTime;
		}

		@JsonProperty("UpdateTime")
		public void setUpdateTime(long updateTime) {
			this.updateTime = updateTime;
		}
	}
}